Editing and browsing images for virtual cameras

ABSTRACT

Digital imaging including creating, in a virtual camera, an unedited image request for an unedited digital image; editing the unedited image request, producing an edited image request for an edited image; communicating the edited image request to a web site for imaging for virtual cameras; receiving in the virtual camera, the edited digital image from the web site; and displaying the edited digital image on a display device of a user interface of the virtual camera. Digital imaging including identifying a browsing image request data element from among image request data elements of an image request data structure; and creating, in dependence upon the identified browsing image request data element, a multiplicity of image requests for digital images, wherein values of the browsing image request data elements vary among the image requests.

BACKGROUND OF THE INVENTION

[0001] 1. Field of the Invention

[0002] The field of the invention is virtual cameras for digitalimaging, or, more specifically, methods, computer program products, andproducts for making and using virtual cameras to create, edit, andbrowse digital images.

[0003] 2. Description of the Related Art

[0004] The state of the art of digital photography is that creation of asnapshot using a traditional camera, either a digital camera or a filmcamera, requires that a camera be physically present near the subject tobe photographed at the time when the photograph is to be taken. Therequirement for physical presence stems from the need to illuminate aphysical imaging device with light reflected from a subject to bephotographed or imaged. Physical imaging devices include, for example,charge coupled devices for digital cameras and film in film cameras.Because of the need to illuminate an imaging device with light actuallyreflected from the subject to be imaged, there is no way in current artto create a snapshot of a subject that is spatially out of view of thecamera. Moreover, snapshots in current art are snapshots of an object asit exists at the time of the snapshot. Because of the need to illuminatean imaging device with light actually reflected from the subject to beimaged, there is no way in current art to create a snapshot of a subjectat a remote point in time. It would be useful, however, to be able tocreate a snapshot of a subject not within spatial view of a camera. Itwould be useful to be able to create a snapshot of a subject as thesubject appeared at a time other than the moment when the snapshot istaken. It would also be useful to be able to edit a snapshot of asubject directly by use of the camera from which the snapshot was taken.

SUMMARY OF THF INVENTION

[0005] Virtual cameras according to embodiments of the present inventionprovide methods of digital imaging that include creating, in a virtualcamera, an unedited image request for an unedited digital image; editingthe unedited image request, producing an edited image request for anedited image; communicating the edited image request to a web site forimaging for virtual cameras; receiving, in the virtual camera, theedited digital image from the web site; and displaying the editeddigital image on a display device of a user interface of the virtualcamera. Such methods typically include communicating, from the virtualcamera to the web site for imaging for virtual cameras, the uneditedimage request for an unedited digital image; receiving, in the virtualcamera, the unedited digital image from the web site; and displaying theunedited digital image on the display device of the virtual camera. Insuch methods, editing an unedited image request typically furthercomprises displaying unedited image request data elements on the displaydevice and receiving edited image request data elements from a dataentry device of the user interface. In such methods, the image requeststypically comprise image request data elements including locationcoordinates, view direction, date, time, zoom, and exposure.

[0006] Virtual cameras according to embodiments of the present inventionprovide methods of digital imaging that include identifying a browsingimage request data element from among image request data elements of animage request data structure; creating, in dependence upon theidentified browsing image request data element, a multiplicity of imagerequests for digital images, wherein each image request comprises aninstance of the image request data structure having image request dataelements one of which is identified as the browsing image request dataelement and values of the browsing image request data elements varyamong the image requests; communicating each image request from avirtual camera to a web site for imaging for virtual cameras; receiving,in the virtual camera, each digital image from the web site; anddisplaying each digital image on a display device of the virtual camera.Such methods often include identifying a browsing range of values forthe browsing image request data element; identifying one or morebrowsing interval values in the browsing range for the browsing imagerequest data element; where creating a multiplicity of image requestsfurther comprises creating for each browsing interval value in thebrowsing range, an image request, wherein each image request has abrowsing image request data element set to a browsing interval value.Such methods often also include identifying a browsing rate, wherecommunicating each image request from a virtual camera to a web site forimaging for virtual cameras is carried out in dependence upon thebrowsing rate. Such methods also often include receiving at least one‘next-image’ command, each ‘next-image’ command representing aninstruction to browse to a next digital image, wherein communicatingeach image request from a virtual camera to a web site for imaging forvirtual cameras further comprises communicating each image request onlyafter receiving a ‘next-image’ command.

[0007] The foregoing and other objects, features and advantages of theinvention will be apparent from the following more particulardescription of exemplary embodiments of the invention, as illustrated inthe accompanying drawings wherein like reference numbers represent likeparts of the invention.

BRIEF DESCRIPTION OF THE DRAWINGS

[0008]FIG. 1 is a block diagram of a general example embodiment of thesystem aspect of the invention.

[0009]FIG. 1a sets forth a block diagram of automated computingmachinery useful in virtual cameras and web sites, including web sitesimplementing electronic photo shops, according to various exemplaryembodiments of the present invention.

[0010]FIG. 2 is a more detailed system diagram illustrating typicalexample embodiments of the invention.

[0011]FIG. 3 is a control flow diagram illustrating method aspects oftypical embodiments.

[0012]FIG. 4 is an example data structure diagram useful in exemplaryembodiments of image requests.

[0013]FIG. 5 is an example data structure diagram useful in exemplaryembodiments of user account records.

[0014]FIG. 6 is a block diagram of an example embodiment of a virtualcamera including an example connection to an electronic photo shop.

[0015]FIG. 7 is a block diagram of a more detailed example embodiment ofa virtual camera, also including connections to an electronic photoshop.

[0016]FIG. 8 is a data structure diagram illustrating an exampleembodiment of a parameter store.

[0017]FIG. 9 is a block diagram of example embodiments of a zoom sensorand an exposure sensor.

[0018]FIG. 10 is a control flow diagram illustrating method aspects ofexemplary embodiments of virtual cameras.

[0019]FIG. 111 is a more detailed control flow diagram illustratingmethod aspects of exemplary embodiments of virtual cameras.

[0020]FIG. 12 sets forth a data flow diagram depicting a furtherexemplary method of digital imaging that includes editing image requestsfor digital images.

[0021]FIG. 13 sets forth a data flow diagram of an additional exemplarymethod of digital imaging that implements browsing digital images.

[0022]FIG. 14 sets forth a data flow diagram illustrating a furtherexemplary method of digital imaging that implements browsing digitalimages with a browsing range of values for a browsing image request dataelement.

DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS Introduction

[0023] The present invention is described primarily in terms of methodsfor providing images for virtual cameras and in particular methods forediting and browsing digital images for virtual cameras. Persons skilledin the art, however, will recognize that any computer system thatincludes suitable programming means for operating in accordance with thedisclosed methods also falls well within the scope of the presentinvention.

[0024] Suitable programming means include any means for directing acomputer system to execute the steps of the method of the invention,including for example, systems comprised of processing units andarithmetic-logic circuits coupled to computer memory, which systems havethe capability of storing in computer memory, which computer memoryincludes electronic circuits configured to store data and programinstructions, programmed steps of the method of the invention forexecution by a processing unit. The invention also may be embodied in acomputer program product, such as a diskette or other recording medium,for use with any suitable data processing system.

[0025] Embodiments of a computer program product may be implemented byuse of any recording medium for machine-readable information, includingmagnetic media, optical media, or other suitable media. Persons skilledin the art will immediately recognize that any computer system havingsuitable programming means will be capable of executing the steps of themethod of the invention as embodied in a program product. Personsskilled in the art will recognize immediately that, although most of theexemplary embodiments described in this specification are oriented tosoftware installed and executing on computer hardware, nevertheless,alternative embodiments implemented as firmware or as hardware are wellwithin the scope of the present invention.

Definitions

[0026] In this specification, the following terms are used as definedhere. Other terms are defined elsewhere in the specification and used asdefined.

[0027] In this specification, the terms “field,” “data element,” and“attribute” are used as synonyms, referring to individual elements ofdigital data. Aggregates of data elements are referred to as “records”or “data structures.” Aggregates of records are referred to as “files”or “tables.” Aggregates of files are referred to as “databases.”Definitions of complex data structures that include member methods,functions, or software routines in addition to data elements arereferred to as “classes.” Instances of complex data structures arereferred to as “objects” or “class objects.”

[0028] “Browser” means a web browser, a software application forlocating and displaying web pages. Browsers typically comprise both amarkup language interpreter, web page display routines, and an HTTPcommunications client. Typical browsers today can display text,graphics, audio and video. Browsers are operative in web-enableddevices, including wireless web-enabled devices. Browsers in wirelessweb-enabled devices often are downsized browsers called “microbrowsers.”Microbrowsers in wireless web-enabled devices often support markuplanguages other than HTML, including for example, WML and HDML.

[0029] “CGI” means “Common Gateway Interface,” a standard technology fordata communications of resources between web servers and web clients.More specifically, CGI provides a standard interface between servers andserver-side ‘gateway’ programs which administer actual reads and writesof data to and from files systems and databases. The CGI interfacetypically sends data to gateway programs through environment variablesor as data to be read by the gateway programs through their standardinputs. Gateway programs typically return data through standard output.It is typically a gateway program that provides a MIME type in a returnmessage header advising a server, and eventually therefore a browser orother communications client, of the type of data returned from CGIgateway programs.

[0030] “Coupled for data communications” means any form of datacommunications, wireless, infrared, radio, internet protocols, HTTPprotocols, email protocols, networked, direct connections, dedicatedphone lines, dial-ups, serial connections with RS-232 or UniversalSerial Buses, hard-wired parallel port connections, and other forms ofdata communications as will occur to those of skill in the art.

[0031] Couplings for data communications wireless modems using analogcellular channels, and communications using CDPD, Cellular DigitalPacket Data. Couplings for data communications include wireless accesspoints, wireless network ports according to IEEE standard 802.11, andBluetooth piconet ports as standardized by the Bluetooth SpecialInterest Group, and HomeRF ports as standardized by the HomeRF WorkingGroup, as well as infrared ports. Couplings for data communicationsinclude Bluetooth piconets implemented in accordance with the well knownde facto industry standard known as the “Bluetooth Specification,” aspecification for short range radio links among mobile personalcomputers, mobile phones, and other portable devices.

[0032] “HTML” stands for ‘HypterText Markup Language,’ a standard markuplanguage for displaying web pages on browsers.

[0033] “HTTP” stands for ‘HyperText Transport Protocol,’ the standarddata communications protocol of the World Wide Web.

[0034] The term “network” is used in this specification to mean anynetworked coupling for data communications. Examples of networks usefulwith the invention include intranets, extranets, internets, local areanetworks, wide area networks, and other network arrangements as willoccur to those of skill in the art. The use of any networked couplingamong virtual cameras, electronic photo shops, and devices coupledthrough designated network addresses is well within the scope of thepresent invention. In embodiments of the kind illustrated, virtualcamera typically includes devices implemented as automated computingmachinery, a web browser, and an internet client having a networkaddress. There is no requirement within the present invention that theinternet client have any particular kind of network address.

[0035] “Network address” means any network address useful to locate avirtual camera or a designated network address on any network. Networkaddress includes any internet protocol address useful to locate aninternet client, a browser, a virtual camera, or a designated networkaddress on the Internet. Network addresses useful with variousembodiments of the invention include local internet protocol addresses,private internet protocol addresses, and temporary Internet addressesassigned to a web client by a DHCP server, and permanent, officialregistered Internet addresses associated with domain names.

[0036] “Server” in this specification refers to a computer or devicecomprising automated computing machinery on a network that managesnetwork resources. A “web server” in particular is a server thatcommunicates with browsers by means of HTTP in order to manage and makeavailable to networked computers markup language documents and digitalobjects.

[0037] A “store” is one or more storage locations in computer memory.“Storing” is writing data to storage locations in computer memory,typically implemented by a processor operating under stored programcontrol.

[0038] A “URI” or “Universal Resource Identifier” is an identifier of anamed object in any namespace accessible through a network. URIs arefunctional for any access scheme, including for example, the FileTransfer Protocol or “FTP,” Gopher, and the web. A URI as used intypical embodiments of the present invention usually includes aninternet protocol address, or a domain name that resolves to an internetprotocol address, identifying a location where a resource, particularlya web page, a CGI script, or a servlet, is located on a network, usuallythe Internet. URLs directed to particular resources, such as particularHTML files, JPEG files, or MPEG files, typically include a path name orfile name locating and identifying a particular resource in a filesystem coupled to a network. To the extent that a particular resource,such as a CGI file or a servlet, is executable, for example to store orretrieve data, a URI often includes query parameters, or data to bestored, in the form of data encoded into the URI Such parameters or datato be stored are referred to as ‘URI encoded data.’

[0039] “URI encoded data” is data packaged in a URI for datacommunications. In the case of HTTP communications, the HTTP GET andPOST functions are often used to transmit URI encoded data. In thiscontext, it is useful to remember that URIs do more than merely requestfile transfers. URIs identify resource on servers. Such resource may befiles having filenames, but the resources identified by URIs alsoinclude, for example, queries to databases. Results of such queries donot necessarily reside in files, but they are nevertheless dataresources identified by URIs and identified by a search engine and querydata that produce such resources. An example of URI encoded data is:

[0040]http://www.foo.com/cgi-bin/MyScript.cgi?field1=value1&field2=value2

[0041] This is an example of URI encoded data, which is how variablenames and values typically are submitted over the web using HTTP GETrequest messages. This method using the GET message is useful when theamount of data to be encoded is fairly small. For larger amounts ofdata, it is more common to use HTTP POST messages for HTML formsubmissions.

[0042] More specifically, the entire example above is a URI bearingencoded data, and the encoded data is the string“field1=value1&field2=value2.” The encoding method is to string fieldnames and field values separated by ‘&’ and “=” with spaces representedby ‘+.’ There are no quote marks or spaces in the string. Having noquote marks, spaces are encoded with ‘+.’ For example, if an HTML formhas a field called “name” set to “Lucy”, and a field called “neighbors”set to “Fred & Ethel”, the data string encoding the form would be:

[0043] name=Lucy&neighbors=Fred+%26+Ethel

[0044] “URLs” or “Universal Resource Locators” comprise a kind of subsetof URIs, wherein each URL resolves to a network address. That is, URIsand URLs are distinguished in that URIs identify named objects innamespaces, where the names may or may not resolve to addresses, whileURLs do resolve to addresses. Although standards today are written onthe basis of URIs, it is still common to such see web-relatedidentifiers, of the kind used to associate web data locations withnetwork addresses for data communications, referred to as “URLs.” Inthis specification, we refer to such identifiers generally as URIs.

[0045] “World Wide Web,” or more simply “the web,” refers to a system ofinternet protocol (“IP”) servers that support specially formatteddocuments, documents formatted in markup languages such as HTML, XML,WML, or HDML. The term “Web” is used in this specification also to referto any server or connected group or interconnected groups of serversthat implement a hyperlinking protocol, such as HTTP or WAP, in supportof URIs and documents in markup languages, regardless whether suchservers or groups of servers are coupled to the World Wide Web as such.

[0046] A “web site” is a location on the World Wide Web. Web sites areidentified by domain names that resolve to Internet addresses. Web sitesinclude storage locations identifiable by URIs. Web sites areimplemented in, on, and as part of web servers, that is, HTTP servers.Web sites are aggregations of computer software installed and operatingon computer hardware.

Imaging for Virtual Cameras

[0047] Turning now to FIG. 1, a first aspect of the invention is seenillustrated as a system for imaging for a virtual camera (116). Theembodiment illustrated includes a web site implemented to function as anelectronic photo shop (200). The term ‘electronic photo shop’ is afanciful descriptive phrase intended to be reminiscent of traditionalphoto shops where film bearing optical images was sent for developing,printing, and delivery. In an electronic photo shop, by way of analogy,image requests (134) for digital images are sent from a virtual camera(116) to an electronic photo shop (200) for retrieval (204), transcoding(126), and delivery (110). To the extent that they are implemented asweb sites, electronic photo shops comprise web servers.

[0048] A virtual camera is any device or computer capable of couplingfor data communications to an electronic photo shop and transmittingimage requests for digital images to the electronic photo shop imagerequests. Examples of devices useful as virtual cameras according toembodiments of the present invention include personal computers,personal digital assistants, and special purpose devices designed andconstructed specifically for use as virtual cameras.

[0049] Both virtual cameras and web servers upon which electronic photoshops are implemented typically comprise automated computer machinery(754) having elements such as those illustrated in FIG. 1a. FIG. 1a setsforth a block diagram of automated computing machinery (754) thatincludes a computer processor or ‘CPU’ (156). The exemplary automatedcomputer machinery (754) of FIG. 1a includes random access memory (168)(“RAM”).

[0050] Stored in RAM (168), in this example of useful automatedcomputing machinery, is a communications application program (104) andan operating system (154). Examples of communications applicationprograms useful with various embodiments of the invention include HTTPcommunications programs such as web server software for web servers andbrowsers and microbrowsers for virtual cameras. Examples of operatingsystems useful with various embodiments of servers and client devicesaccording to the present invention include Microsoft's DOS, Microsoft'sNT™, Unix, Linux, and others as will occur to those of skill in the art.The use of any operating system, or no operating system, is within thescope of the present invention.

[0051] In addition to RAM, the exemplary automated computer machinery(754) of FIG. 1a includes non-volatile computer memory storage space(166). Non-volatile storage space (166) can be implemented as hard diskspace (170), optical drive space (172), electrically erasableprogrammable read-only memory space (so-called ‘EEPROM’ or ‘Flash’memory) (174), or as any other kind of computer memory, as will occur tothose of skill in the art, capable of receiving and storing software andcomputer data, including communications applications programs, securityobjects, operating systems, security control data, security requestdata, and resources comprising information in the form of computer data.

[0052] The automated computer machinery (754) of FIG. 1a includes aninput/output interface (178) capable of providing input from data entrydevices (256) and output to display devices (652). Data entry devices(256) include mice, touch-sensitive screens, keyboards, and so on.Display devices (652) include video screens on personal computers,liquid crystal screen on wireless handheld devices, audio speakers,television screens, and so on. To the extent that a data entry device(256) and a display device (652) on the same virtual camera or webserver comprise a touch-sensitive screen, a data entry device (256) anda display device (652) can be the same physical device. Data entrydevices and display devices both implement or utilize GUIs orcharacter-based user interfaces. Automated computer machinery (754) asillustrated in FIG. 1a typically includes also serial ports (750) andparallel ports (752) for additional input/output support. Other hardwarecomponents of automated computing machinery often used in virtualcameras and web servers for electronic photo shops but not shown on FIG.1a include wired Ethernet cards, wireless LAN cards for 802.11 orBluetooth wireless connections, and USB (Universal Serial Bus) ports.

[0053] An image request is a data structure representing a request forpreparation of a digital image of a view in a particular direction froma particular location. Image requests are communicated across networksto electronic photo shops of the invention. FIG. 4 illustrates exampleembodiments of data structures useful as image requests in variousembodiments of the invention. The example embodiment of image requestdata structure illustrated in FIG. 4 includes data elements representinglocation coordinates (304), view direction (306), zoom (308), exposure(309), date (310), time (312), network address (316), deliveryinstructions (318), user account identification code (320), and a devicetype (322).

[0054] Location coordinates (304) are standard data representations oflatitude and longitude, and, optionally, as described below, elevation.View direction (306) typically comprises a standard data representationof a compass direction from the location coordinates to a subject forimaging. In addition to a two-dimensional indication of direction uponthe surface of the earth, view direction optionally includes a verticalcomponent such as elevation, declination, or any other measure ofvertical view angle.

[0055] Zoom (308) is an indication of magnification. Alternatively, zoomis considered an indication of relation between the position of a viewerof an image and the size of the image. In some embodiments, in a fashionanalogous to film cameras, zoom is expressed in terms of lens focallength. In embodiments of the present invention that measure zoom interms of lens focal length, the lens focal length is a conventional orscaled representation in which the standard is generally taken that 45millimeters gives a ‘normal’ view, focal lengths of less than 45millimeters give wide angle views, and focal lengths of more than 45millimeters give close-up views. The lens focal length is said to beconventional or scaled in such embodiments because, of course, in manysuch embodiments, using, as they do, virtual cameras, often there are nophysical lenses and there are no physical focal lengths.

[0056] Exposure (309) is a virtual measure of the darkness or lightnessof an image, analogous to what is measured by lens aperture and shutterspeed in a film camera. Exposure in embodiments of the presentinvention, however, is a virtual measure in the sense that, in manyembodiments of virtual cameras, there is no actual lens, no lensaperture, no actual shutter, and no shutter speed.

[0057] In the detailed example embodiment of image request datastructure as illustrated in FIG. 4, date (310) and time (312) areconventional data representations of the date and time of an imageretrieved and transcoded into a virtual snapshot. Within the presentinvention, there is no requirement that the date and time of the imagebe the date and time of the virtual snapshot. A user of a virtual cameracan take a virtual snapshot at noon of a subject with the resultingimage being for midnight, and vice versa. A user of a virtual camera cantake a virtual snapshot of a public park at noon in July, when the treesare covered with leaves, and specify in the date field of the imagerequest that the image is to be retrieved and transcoded for January 20at 4:00 p.m. local time, so that the image depicts the park with lateafternoon light on a winter day, with no leaves on the trees.

[0058] In image request data structures as illustrated in FIG. 4, thenetwork address (316) is an internet protocol address or a web address.In many embodiments, the virtual camera includes a browser, oftenincluding a wireless Internet connection. Web addresses in some of theseembodiments are dynamically assigned to the virtual camera when thecamera's browser connects to the Internet, typically by a download froma DHCP server. In other embodiments of this kind, the virtual camera hasa permanently assigned web address associated with the camera, as, forexample, a web addressed resolved through a registered domain name.

[0059] In image request data structures of the kind illustrated in FIG.4, delivery instructions (318) include data representations of userchoice regarding delivery of a transcoded image, including, for example,whether the image is to be delivered by download directly to the virtualcamera, delivered by email, or delivered by recording an image on arecording medium such as a CD or DVD and mailing it to a user.

[0060] Many image request data structures of the kind illustrated inFIG. 4 include a user account identification code (320) which is used invarious embodiments of the invention to identify user account recordsthat store information regarding user, including, for example, userpreferences regarding image processing and delivery and defaultinformation regarding device types for particular users. In addition,many image request data structures of the kind illustrated in FIG. 4include a field identifying a device type (322) for a virtual camera.Device types of virtual cameras useful in typical embodiments includepersonal computers, personal digital assistants, and special purposedevices designed and constructed specifically for use as virtualcameras. In fact, device types useful as virtual camera include anydevice or computer capable of coupling for data communications through anetwork to an electronic photo shop and transmitting to the electronicphoto shop, through the network, image requests.

[0061] Turning now to FIG. 2, a more detailed embodiment of theinvention is shown as a system for imaging for virtual cameras. Theembodiment shown in FIG. 2 is implemented as a web site configured as anelectronic photo shop, including an image request server (136). Theimage request server is software installed and running on computerhardware configured as a server, coupled for data communications to avirtual camera (116), the image request server being programmed toreceive image requests (134) and pass them along, for example, through aqueue (138), to a request processor (124) for further processing. Thatis, the image request server (136) can be configured as a web server, anHTTP server, in which receiving image requests (134) comprises receivingHTTP request messages bearing image request data elements encoded as URIencoded data.

[0062] In many embodiments of the present invention, an electronic photoshop can provide audio clips to accompany transcoded images. Inembodiments of the kind shown in FIG. 2, audio files are stored (112) incomputer memory in a fashion similar to image storage (110). Suchcomputer memory stores (112, 110) are databases containing digital audioand image files, or pointers to actual locations of such files, indexedor sorted according to various pertinent attributes, including, forexample, location coordinates and view direction. Such computer memorystores in some embodiments are sorted or indexed also according to zoom,exposure, date, or time. Such computer memory stores are in variousembodiments sorted or indexed in other ways as will occur to those ofskill in the art, all such ways being well within the scope of thepresent invention.

[0063] Typical embodiments of the kind shown in FIG. 2 include a requestprocessor (124). The request processor is a software subsystem installedand running on computer hardware, the request processor programmed tosearch (128) audio and video stores (110, 112), and retrieve from suchcomputer memory stores, raw images (130) and raw audio clips (112)corresponding to an image request. In typical embodiments, a requestprocessor then provides the raw images and audio clips to a transcoder(126) for transcoding. The transcoder (126) transcodes the images andaudio and returns transcoded images and transcoded audio (135) to therequest processor. The request processor then typically provides thetranscoded images and audio clips to a delivery agent (114) for deliveryin accordance with user instructions or preferences.

[0064] In typical embodiments of the kind shown in FIG. 2, a transcoder(126) is a software subsystem installed and running on computer hardwareand programmed to receive raw audio and a raw image (133) and transcodethem according to an image request. That is, the transcoder typicallywill adjust an image to accord with the zoom, exposure, date, time, anddevice type in accordance with the values of these fields in an imagerequest. Device type indications include, for example, whether aparticular virtual camera supports audio, whether a particular virtualcamera has a display screen, the size of the display screen on thevirtual camera, whether the display screen on a virtual camera supportscolor, and so on.

[0065] In addition to transcoding according to data element values in animage request, the transcoder also operates in dependence upon userpreferences (148) and defaults (146) set in user account records (142).That is, for example, in the embodiment shown in FIG. 2, the transcoder(126) infers zoom, exposure, date, and time from user preferences in theabsence of a setting for zoom, exposure, date, and time in the imagerequest. That is, for example, a user sets in defaults or preferences inthe user's account information (142) that in the absence of a zoom entryin an image request, the transcoder is to set the zoom to 25millimeters, a wide angle view. This alternative is useful when, forexample, the raw image is recorded in storage with a normal viewcorresponding to a 45 millimeter focal length, which would be providedin the transcoded image, in the absence of an entry in the imagerequest, but for the user preference or default setting.

[0066] Similarly, defaults are set for date and time, so that, forexample, in the absence of a setting in the image request, thetranscoder defaults to producing images based upon the date and timewhen the image request is received. This example default setting fordate and time, of course, is analogous to operation of a physical camerawhich makes snapshots of subjects as the subjects appear at the time ofthe snapshot.

[0067] Alternatively, for example: A user wants a series of images ofsubjects as they appear at 10:00 p.m. local time, but is only able tovisit the location of the subject at 10:00 a.m. The user then sets atime default on the user's account to 10:00 p.m. and convenientlysubmits a series of image requests at 10:00 a.m. without bothering toenter time values for each request. Then the transcoder transcodes allthe images in this example series to appear as if illuminated by lightconditions normally prevalent at 10:00 p.m.

[0068] The example embodiment illustrated in FIG. 2 includes a deliveryagent (114). The delivery agent in the example embodiment received thetranscoded image, optionally with an audio clip, from the requestprocessor (124). The delivery agent also is passed either a pointer tothe image request or a copy of the image request. Either way, thedelivery agent carries out its work in dependence upon the data in theimage request, and, by reading a user account identification code fromthe image request, as at reference (320) on FIG. 4, the delivery agentalso has access to user defaults (146) and preferences (148) regardingdelivery. Users override defaults and preferences by including deliveryinstructions (reference 318 on FIG. 4) in image requests. Thus usersthrough defaults, preferences, and delivery instructions effectsdelivery of transcoded images through any combination of downloads fromthe delivery agent (114) to a virtual camera (116); from the deliveryagent (114) to other media such as CDs or DVDs and then through regularmail or courier services to a user's physical address; from the deliveryagent through email to an email address (118), either the user's emailaddress or any other email address at the user's option; and from thedelivery agent (114) directly to other network addresses.

[0069] In various embodiments, server-side software and hardware,including electronic photo shops, commercial Websites, delivery agents,and request processors are coupled for data communications to virtualcameras, not necessarily at the same time, but at one time or another.The couplings for data communications take various forms depending onthe embodiment, including for example, wireless network connections aswell as standard USB (Universal Serial Bus) cable connections or RS-232(EIA232) connections. The phrase “coupled for data communications” isdefined above in this specification, although the definition is notlimiting. Other forms of coupling for data communications will occurthose of skill in the art, and all such forms are well within the scopeof the present invention.

[0070] Downloading from the delivery agent (114) to the virtual cameratypically includes downloading across a coupling for data communicationsto a particular network address where the virtual camera is located on anetwork, in many embodiments an internet, although the use of otherkinds of networks is well within the scope of the invention. In manyembodiments, a network address for a virtual camera is communicated tothe delivery agent through a network address (reference 316 on FIG. 4)data element in an image request, particularly useful with temporaryinternet addresses dynamically assigned to the virtual camera by a DHCPserver. In other embodiments, a virtual camera has a permanentlyregistered internet address and a domain name, either or both on file(150) in a users account data record (142) in the electronic photo shop,which the deliver agent retrieves on the basis of the user's accountidentification (320 on FIG. 4) read from the image request. Similarly,in various embodiments, the user's email address or alternative emailaddresses are communicated to the delivery agent through deliveryinstructions (318 on FIG. 4) in image requests or retrieved from useraccount records (142).

[0071] As mentioned above, however, network couplings are not requiredas such. Embodiments are well within the invention that simply connect avirtual camera through a USB cable to a computer having a delivery agentrunning upon it, for purposes of downloading images to a virtual camera.For purposes of communicating image requests from a virtual camera to animage processor or electronic photo shop, it is well within theinvention for embodiments simply to connect the camera through a USBcable or RE-232 cable to a computer having running upon it an electronicphoto shop or an image request processor.

[0072] Turning now to FIG. 3, a further embodiment of the invention isshown as an example method of imaging for virtual cameras implementedthrough a web site called an electronic photo shop. The embodiment shownin FIG. 3 includes receiving (202) in an electronic photo shop (200),from a virtual camera (116) coupled for data communications through anetwork (117) to the electronic photo shop, an image request (134). Intypical embodiments, the image request includes a data structureincluding data elements specifying location coordinates and viewdirection (as shown at references 304 and 306 on FIG. 4). Receiving(202) an image request (134) in an electronic photo shop implemented asa web site on a web server can be carried out by receiving imagerequests (134) implemented as HTTP request messages bearing imagerequest data elements encoded as URI encoded data.

[0073] The illustrated example embodiment includes retrieving (204), independence upon the location coordinates and view direction, from amongstored images (110), a raw image (133); transcoding (206) the raw image;and storing (208) the transcoded image in computer memory (220). In someembodiments of electronic photo shops implemented as web sites,retrieving (204) a raw image (133) is carried out through a CGI programidentified by a URI in an image request implemented as an HTTP requestmessage. The CGI program in such embodiments carries out a databasequery among stored images (110) using image request data elements, suchas, for example, location coordinates and view direction, as searchparameters. In such exemplary embodiments, the search parameters areprovided as URI encoded data in an image request implemented as an HTTPrequest message.

[0074] For further explanation, here is an example of URI encoded imagerequest data elements of a kind that can usefully be provided to a CGIscript for image retrieval through an HTTP request message:

[0075] http://www.photoshop.com/cgi-bin/ImageRetrieve.cgi?

[0076] latitude=39&longitude=77&direction=270

[0077] The exemplary URI encoded image request data elements areelements of an image request for location coordinates of latitude 39degrees and longitude 77 degrees with a view direction of 270. Thisparticular example of location coordinates, latitude and longitude isnear downtown Washington, D.C., and the view direction is due west.Possibly this image request retrieves a view with the Potomac River inthe background.

[0078] In typical embodiments of the kind illustrated in FIG. 3, theimage request (134) further includes a device type (144) for the virtualcamera and transcoding (116) is carried out in dependence upon thedevice type. The device type typically identifies such device attributesas whether the device supports graphic display, display screen size,whether the device supports color, whether the device supports audio,and so on. Other attributes of devices to be used as virtual cameraswill occur to those of skill in the art, and the use of all suchattributes is well within the scope of the present invention. In typicalembodiments, the image request (134) further includes a user accountidentification code (as shown at reference 144 on FIG. 5). Typicalembodiments, as shown in FIG. 3, include inferring a device type fromuser account records (142) in dependence upon the account identificationcode (144), and transcoding (206) in dependence upon the device type.Inferring a device type from user account records typically includesreading the account identification code from an image request, finding auser account record with the same account identification code, andreading from that user account record a device type.

[0079] As shown in FIG. 3, typical embodiments of the invention includedelivering (222) a transcoded image (135) through a network (117) to avirtual camera (116). In many embodiments, the network (117) is aninternet, the electronic photo shop is implemented as a web server orincludes a web server, the virtual camera includes a browser, anddelivering the transcoded image (135) through the network (117) to thevirtual camera (116) includes delivering the transcoded image throughthe network to the virtual camera by use of HTTP messages. In typicalembodiments the image request (134) includes a network address (as shownat reference 316 on FIG. 4) and delivering the transcoded image throughthe network to the virtual camera further includes delivering thetranscoded image through the network to the virtual camera at thenetwork address.

[0080] Typical embodiments of the invention include coupling for datacommunications the virtual camera to the electronic photo shop, whereincoupling for data communications the virtual camera to the electronicphoto shop includes dynamically assigning (214) the network address.Dynamically assigning the network address includes receiving a temporarynetwork address in accordance with protocols from a DHCP server, meaninga Dynamic Host Configuration Protocol server.

[0081] In typical embodiments, the image request (134) includes a useraccount identification code (as at reference 320 on FIG. 4). Typicalembodiments include inferring, in dependence upon the accountidentification code, from user account records, a permanent networkaddress (as at reference 150 on FIG. 5) for the virtual camera (116). Inthis sense, inferring a permanent network address includes reading anaccount identification code from an image request (as reference 320 onFIG. 4), finding a user account record with the same accountidentification code (as reference 144 on FIG. 5), and reading apermanent network address (reference 150 on FIG. 5) from the useraccount record.

[0082] In typical embodiments, delivering the transcoded image (135)through the network (117) to the virtual camera (116) includesdelivering the transcoded image through the network to the virtualcamera at the permanent network address. Typical embodiments alsoinclude delivering (222) the transcoded image (135) through the networkto a designated network address (226), the designated network addressbeing, for example, some network address other than the network addressof the virtual camera. Examples of designated network addresses usefulwith the present invention include storage locations on user's web sitesidentified by URIs including domain names resolving to networkaddresses. Many other forms of designated network addresses other thanthe network address of a virtual camera will occur to those of skill inthe art, and the use of all such alternative forms of designated networkaddresses is well within the scope of the present invention.

[0083] Typical embodiments, as shown on FIG. 3, further include optionaladditional modes of delivery such as emailing (224) the transcoded image(135) and recording (228) the transcoded image (135) on a recordingmedium (230). Other modes of delivery will occur to those of skill inthe art, and all such modes of delivery of transcoded images and audioare well within the scope of the present invention.

[0084] Typical embodiments of the kind illustrated in FIG. 3 includeretrieving (204), in dependence upon the location coordinates and viewdirection, from among stored audio files (112), a raw audio file (133);transcoding (206) the raw audio file; and storing the transcoded audiofile (135) in computer memory (220). Typical embodiments includedelivering (222) the transcoded image and the transcoded audio file(135) to the virtual camera (116) through the network by use of HTTPmessages and delivering (222) the transcoded audio file through thenetwork to a designated network address (226). Typical embodimentsfurther include emailing (224) the transcoded audio file and recording(228) the transcoded audio file on a recording medium (230).

Virtual Camera

[0085] Turning now to FIG. 6, a further aspect of the invention is shownas a virtual camera (116). A typical exemplary virtual camera of thepresent invention is automated computing machinery comprising one ormore microprocessors coupled to computer memory, with one or moresoftware agents installed and running upon the microprocessors. Theillustrated embodiment of FIG. 6 includes a user interface (612), aparameter store (626), a snapshot agent (614), a snapshot queue (618),and a connection agent (620).

[0086] Embodiments of virtual cameras include a wide variety of physicalforms, ranging, for example, from personal computers to personal digitalassistants to elaborate purpose built devices. In embodiments aspersonal computers, examples of user interfaces (612) include mice,display screens, keyboards, and so on. In embodiments as personaldigital assistants, user interface (612) includes keypads,touch-sensitive screens, and liquid crystal displays.

[0087] Parameter stores (626) in typical embodiments are computer memorydedicated to storing default values for image request data elements.Snapshot queues (618) are computer memory dedicated to storing one ormore image requests. Snapshot agents are collections of computerprograms capable of creating image requests (302); gathering and writinginto the image requests the image request data elements needed tocomprise a request for an image to be directed to an electronic photoshop; and storing the image requests in a snapshot queue to awaittransmission to the electronic photo shop.

[0088] A connection agent (620) in typical embodiments is one or morecomputer programs capable of retrieving image requests from a snapshotqueue (618) and communicating the image requests to an electronic photoshop (200). As illustrated in FIG. 7, some embodiments of virtualcameras include display devices (632) capable of displaying digitalimages. In such embodiments, connection agents (620) typically includealso the capability of receiving requested digital images (628) backfrom an electronic photo shop and passing the digital images to adisplay agent (630) for display on the display device. Display agents insuch embodiments typically comprise one or more computer programscapable of retrieving digital images from digital image storage (628)and displaying them on a display device (632) comprising part of thevirtual camera (116). Examples of display devices useful with thepresent invention include video screens and liquid crystal displays.There are many display devices useful with the present invention thatwill occur to those of skill, and all such devices are well within thescope of the present invention.

[0089] Some embodiments of the present invention support entry through auser interface (612) of one or more, in some embodiments, all, of theimage request data elements needed to create an image request. Suchembodiments include, for example, personal computers, in which users cansimply type in location coordinates, view direction, zoom, exposure, andso on, regardless of the physical location of the subject of an imagerequest or snapshot and regardless of the physical location of thevirtual camera. To use such an embodiment, a user can read locationcoordinates and view direction off a map, for example, and then simplytype them in through a user interface. Such embodiments have little orno resemblance in form or function to a film camera. Other embodiments,however, tend more to resemble film cameras in form and function, havingfor example, viewers and data acquisition systems capable of automatingthe generation of image request data elements. FIG. 7 illustrates onesuch more detailed embodiment.

[0090] The more detailed embodiment illustrated in FIG. 7 includes a GPSreceiver (610), that is, a Global Positioning System receiver, capableof providing precise location coordinates in digital form. In the moredetailed embodiment shown in FIG. 7, a snapshot agent is programmed toread location coordinates directly from a GPS receiver integrateddirectly into the virtual camera itself. Similarly, the embodiment ofFIG. 7 includes an electronic digital clock from which the snapshotagent is programmed to read directly the date and time of a snapshot orimage request. The embodiment of FIG. 7 includes an electronic digitalcompass (606) from which the snapshot agent (614) is capable of readingdirectly the view direction of the virtual camera at the time when animage request is created. The embodiment of FIG. 7 includes anelectronic exposure sensor (604) from which the snapshot agent (614) iscapable of reading directly an exposure value. The embodiment of FIG. 7includes an electronic zoom sensor (602) from which the snapshot agentis capable of reading directly a zoom value.

[0091] GPS receivers, electronic digital compasses, electronic exposuresensor, and the like, are optional additional features that tend toimprove usefulness of a virtual camera for many purposes, althoughadding such features may increase the cost of particular embodiments. Itis a useful advantage of many embodiments of the present invention,however, that virtual cameras can be very cost effective with respect tothe quality of image to be produced, because the image quality istotally unrelated to the physical qualities of the virtual camera. Morespecifically, image quality is determined entirely in the electronicphoto shop. This fact cuts hard against obsolescence of particularembodiments of virtual camera because advancements in imaging technologyare embodied in electronic photo shops, not in the cameras.

[0092] As shown in FIG. 7, virtual cameras in typical embodimentsinclude wireless (622) or serial (624) means for coupling for datacommunications to an electronic photo shop (200). Serial couplings (624)include couplings through ordinary serial or parallel ports on personalcomputer (634), as well as the newer USB connections, or UniversalSerial Bus connections, capable of data transfer rates of up to 480Mbps.

[0093] In addition to wired coupling through serial or parallel ports,many embodiments support wireless couplings for communications of imagerequests and return of requested images. Some wireless couplings arefairly location specific, such as Bluetooth, 802.11 connections, andinfrared connections, in which the virtual camera would need to befairly close to a personal computer or other device having a compliantwireless access point in order to effect a coupling for datacommunications. In such embodiments, as in the wired serial couplings,the virtual camera connects through the coupling to a personal computer,for example, which in turn connects to, for example, the Internet, andcommunicates one or more image requests to one or more electronic photoshops on the Internet. In such embodiments, it is typical for a user totake more than one snapshot in the form of stored image requests waitingin a snapshot queue on board a virtual camera, connect the virtualcamera to a personal computer, and upload the image requests forprocessing at an electronic photo shop.

[0094] In other embodiments, wireless (622) means for coupling for datacommunications include wireless modems on analog cell phone channels orCDPD channels. CDPD, a digital data transmission technology developedfor use on cellular phone frequencies, offers data transfer rates of upto 19.2 Kbps, quicker call set up compared to analog, and better errorcorrection than using modems on an analog cellular channel. Theadvantage of embodiments using wireless modems, on analog channels orCDPD, is that connections a virtual camera to an electronic photo shopare effected at anytime, so long as the virtual camera is in an areacovered by cellular phone service.

[0095] In addition to analog cell phone channels and CDPD, other longrange wireless technologies are useful with various embodiments ofvirtual camera, including, for example, GPRS or General Packet RadioService, a standard for wireless communications which runs at speeds upto 150 kilobits per second, and GSM or Global System for MobileCommunications, which operates typically at 9.6 kilobits per second.Other ways of effecting long range wireless couplings for datacommunications between virtual cameras and electronic photo shops willoccur to those of skill in the art, and all such ways are well withinthe scope of the present invention.

[0096] Turning now to FIG. 10, a further aspect of the invention isillustrated as a method of digital imaging. In typical embodiments, themethod is implemented through use of a virtual camera (116), wherein thevirtual camera includes automated computing machinery operating undersoftware program control, and a user interface (612). Typicalembodiments include creating (1002) an image request (302) for a digitalimage and storing (1004) the image request data elements in the imagerequest.

[0097] In typical embodiments of the invention, as shown in FIG. 4, theimage request includes an image request data structure representing anddescribing the digital image, the image request data structure includesimage request data elements (302), and the image request data elementsinclude data elements for location coordinates and a data element forview direction (304, 306). In further embodiments, the image requestdata elements also include data elements for zoom (308), exposure (309),date (310), and time (312). In still further embodiments, the imagerequest data elements include data elements for a network address of thevirtual camera (316), delivery instructions (318), a user accountidentification code (320), and a device type (322).

[0098] Turning back to FIG. 10, typical embodiments of the invention areseen to include acquiring (611) at least one of the image request dataelements (1006) through the user interface (612). In some embodiments,the user interface (612) includes a computer video screen and keyboardon a personal computer. In other embodiments, the user interface (612)comprises a touch-sensitive pad on a personal digital assistant. Intypical embodiments, the virtual camera includes a parameter store(626), the parameter store including non-volatile computer memory.Typical embodiments of the invention also include acquiring (615) atleast one of the image request data elements from a parameter store(626).

[0099] Typical embodiments of the kind illustrated in FIG. 10 includeentering (627) through a user interface (612), into the parameter store,default values for the image request data elements, the default valueshaving in the parameter store, for example, a data structure asillustrated in FIG. 8. Typical embodiments also include storing theimage request in a snapshot queue (618), the snapshot queue comprisingcomputer memory in the virtual camera. Typical embodiments furtherinclude coupling, for data communications, the virtual camera to a website for imaging for virtual cameras (200) and communicating (1010) theimage request (302) from the virtual camera to a web site for imagingfor virtual cameras (200). Communicating (1010) an image request (302)to an electronic photo shop implemented as a web site on a web server,for example, can be carried out by communicating an image request (302)implemented as an HTTP request message bearing image request dataelements encoded as URI encoded data.

[0100] In some embodiments, the virtual camera includes a display device(632), and the method of the invention includes receiving (1012) adigital image (1014) from the web site (200) and displaying (1016) thedigital image on the display device (632). In embodiments in which theelectronic photo shop (200) is implemented as a web site, receiving(1012) a digital image (1014) can be carried out by receiving an HTTPresponse message with the digital image appended in the form of a GIFfile or a JPEG file, for example.

[0101] In some embodiments of the kind illustrated in FIG. 11, the imagerequest data elements include at least one data element for locationcoordinates and the virtual camera includes a GPS receiver (610). Suchembodiments typically include reading (1110) location coordinates values(1110) from the GPS receiver and storing (1112) the location coordinatesvalues in the image request (302). In other embodiments, the imagerequest data elements also include a data element for view direction,and the virtual camera includes a digital compass (606). Suchembodiments typically include reading (1110) a view direction value(1106) from the digital compass and storing (1112) the view directionvalue in the image request (302). In many embodiments, the image requestdata elements further include data elements for date and time, and thevirtual camera includes a digital clock (608). Such embodimentstypically include reading (1110) date and time values (1108) from thedigital clock and storing (1112) the date and time values in the imagerequest (302).

[0102] In many embodiments of the kind illustrated in FIG. 9, the imagerequest data elements include a data element for zoom and the virtualcamera includes a lens assembly (907) having a first moveable element(916) and a zoom sensor (602). In such embodiments, the zoom sensortypically includes a potentiometer (902) having a wiper and a wipercontact (not shown), wherein the wiper is moveably coupled (906) to thefirst moveable element of the lens assembly (916). Such embodimentstypically include an analog-to-digital converter (904) electricallycoupled to the wiper contact of the potentiometer (902).

[0103] In many embodiments of the invention, as shown in FIG. 11, theimage request data elements include a data element for zoom, and thevirtual camera includes a zoom sensor (602). Such embodiments typicallyinclude reading (1110) a zoom value (1102) from the zoom sensor andstoring (1112) the zoom value in the image request (302).

[0104] In many embodiments of the invention, as shown in FIG. 9, theimage request data elements include a data element for exposure. In suchembodiments, the virtual camera typically includes a lens assembly (907)having a second moveable element (910), and the second moveable elementhas the capability of adjusting the amount of light passing through alight path through the lens assembly. Such embodiments typically includean exposure sensor (604). In such embodiments, the exposure sensortypically includes a photocell (908) positioned in the light paththrough the lens assembly (907), and the photocell includes anelectrical output contact (not shown). Such embodiments typicallyinclude an analog-to-digital converter (914) electrically coupled (912)to the electrical output contact of the photocell.

[0105] In many embodiments of the kind illustrated in FIG. 11, the imagerequest data elements include a data element for exposure, and thevirtual camera includes an exposure sensor (604). Such embodimentsinclude reading (1110) an exposure value (1104) from the exposure sensorand storing (1112) the exposure value in the image request (302).

Editing Image Requests

[0106]FIG. 12 sets forth a data flow diagram depicting a furtherexemplary method of digital imaging that includes editing image requestsfor digital images. The method of FIG. 12 includes creating (1002), in avirtual camera (116), an unedited image request (302) for an unediteddigital image (1014). The method of FIG. 12 is implemented through useof a virtual camera, where, as described in more detail above in thisdisclosure, the virtual camera comprises automated computing machineryoperating under software program control. The virtual camera includes auser interface (612) comprising at least one display device (632) and atleast one data entry device (256). In some embodiments, a display device(632) and a data entry device (256) are the same physical device, aswhen they comprise, for example, a touch-sensitive screen.

[0107] The unedited image request (302) is an image request created asdescribed above in detail in this disclosure. That is, created bystoring image request data elements in an image request data structure.That is, an unedited image request according to the method of FIG. 12comprises an image request data structure representing and describing arequested digital image. The image request data structure comprisesimage request data elements, and the image request data elementstypically comprising at least data elements for location coordinates anda data element for view direction. In addition, image request dataelements can include date, time, zoom or focal length, and exposure,F-stop setting, shutter speed, and so on, recalling only that all suchattributes or data elements are ‘virtual’ in the sense that virtualcameras typically have no apertures measured by actual F-stops and nophysical shutters to have an actual shutter speed. Rather suchattributes in exemplary embodiments of the present invention are virtualanalogues that approximate similar attributes of film cameras for use indigital imaging in electronic photo shops.

[0108] The method of FIG. 12 includes editing (250) the unedited imagerequest (302), producing an edited image request (252) for an editedimage (254). In the method of FIG. 12, the image requests, both theunedited and the edited image requests, are built upon an image requestdata structure such as the one illustrated at reference (302) in FIG. 4,and the images requests therefore include image request data elementssuch as location coordinates (such as latitude and longitude), viewdirection, date, time, zoom, and exposure. That is, there is no inherentdifference in data structure among image requests, unedited imagerequests, and edited image requests. An unedited image request typicallyis ‘edited,’ according to embodiments of the present invention, in thesense that the values of its image request data elements are changed,not through any change of structure. This is an explanation, not alimitation. Editing can include changes in data structure, althoughtypically it does not.

[0109] As shown also on FIG. 12, in the illustrated method, editing(250) an unedited image request (302) can be carried out, for example,by displaying (262) unedited image request data elements (258) on thedisplay device (632) and receiving (264) edited image request dataelements (260) from a data entry device (256) of the user interface(612). The user interface can be a GUI or a character-based interface.

[0110] The method of FIG. 12 includes communicating (1010) the editedimage request (252) to a web site (200) for imaging for virtual cameras.In the terminology of this disclosure, the web site is an electronicphoto shop, and, for an electronic photo shop that uses CGI scripts toretrieve and transcode digital images in response to image requests, animage request and more particularly its image request data elements canbe communicated by use of a URI having a form, for example, like thefollowing:

[0111] http://www.photoshop.com/cgi-bin/ImageRetrieve.cgi?

[0112] latitude=39&longitude=77&direction=270

[0113] For an electronic photo shop that uses Microsoft Active ServerPages or ‘ASPs’ to retrieve and transcode digital images in response toimage requests, an image request and more particularly its image requestdata elements can be communicated by use of a URI having a form, forexample, like the following:

[0114] http://www.photoshop.com/cgi-bin/ImageRetrieve.asp?

[0115] latitude=39&longitude=77&direction=270

[0116] For an electronic photo shop that uses Java Server Pages or‘JSPs’ to retrieve and transcode digital images in response to imagerequests, an image request and more particularly its image request dataelements can be communicated by use of a URI having a form, for example,like the following:

[0117] http://www.photoshop.com/cgi-bin/ImageRetrieve.asp?

[0118] latitude=39&longitude=77&direction=270

[0119] The method of FIG. 12 includes receiving (1012), in the virtualcamera, the edited digital image (254) from the web site (200). Inembodiments in which the electronic photo shop (200) is implemented as aweb site, receiving (1012) a digital image (1014) can be carried out byreceiving an HTTP response message with the digital image appended inthe form of a GIF file or a JPEG file, for example. The method of FIG.12 also includes displaying (1016) the edited digital image (254) on adisplay device (632) of a user interface (612) of the virtual camera(116).

[0120] The method as illustrated in FIG. 12 also includes communicating(1010), from the virtual camera (116) to the web site (200) for imagingfor virtual cameras, the unedited image request (302) for an unediteddigital image (1014). The method of FIG. 12 also includes receiving(1012), in the virtual camera (116), the unedited digital image (1014)from the web site (200) and displaying (1016) the unedited digital image(1014) on the display device (632) of the virtual camera (116). This isa gloss on creating the unedited image request in the first place. Thatis, it is probably more usual to communicated an unedited image request,receive an unedited digital image, display it, and then edit it, so thatthe photographer can first see the subject matter before deciding whatto change in the way of edits. Alternatively, a photographer can haltbefore communicating an unedited image request, perhaps because thephotographer has an idea for a change that occurs before pushing the‘send’ button, edit the unedited image request, and send for an editedimage without first seeing the unedited image.

[0121] By now the reader has noticed some advantages of the illustratedmethod of digital imaging including editing image requests. The methodillustrates a way of editing digital images by making changes innon-graphic data elements in a remote client device, a virtual camera,while the real work of manipulating graphic images, retrieving them fromlarge image stores, transcoding them to fit a particular device type,screen size, and so on, occurs server-side in an electronic photo shop.There is no need for complex manipulations of graphic images in thevirtual camera, which can be a simple, inexpensive, highly portabledevice. A virtual camera capable of supporting this kind of editing ofgraphic images can be made from any automated computing machinerycapable of editing a few simple data elements for view direction, cameralocation, zoom, exposure, date, time, and so on.

Browsing Digital Images

[0122] Sharp eyed readers will have noticed that utilization of themethod of FIG. 12 could include preparing several edited image requestsin sequence and sending them all in sequence to an electronic photo shopso that receiving back and displaying the corresponding edited digitalimages would result in a changing display of graphic images in sequence.This disclosure now presents a way of automating such a process.Creating a multiplicity of image requests for digital images,communicating them, receiving and displaying the corresponding digitalimages in sequence is referred to as ‘browsing,’ distinguishing this‘browsing’ from operation of a web browser as such.

[0123]FIG. 13 sets forth a data flow diagram of an additional exemplarymethod of digital imaging that implements browsing digital images. Themethod of FIG. 13 includes identifying (266) a browsing image requestdata element (268) from among image request data elements (270) of animage request data structure (302). A browsing image request dataelement is an image request data element that is varied from imagerequest to image request among a multiplicity of image requests, therebychanging the corresponding digital images as received back from anelectronic photo shop.

[0124] The method of FIG. 13 also includes creating (272), in dependenceupon the identified browsing image request data element (268), amultiplicity of image requests (134) for digital images (1014). In themethod of FIG. 13, each image request comprises an instance of the imagerequest data structure (302) having image request data elements (270)one of which is identified as the browsing image request data element(268). The method of FIG. 13 also includes communicating (1010) eachimage request (134) from a virtual camera (116) to a web site (200) forimaging for virtual cameras. The method of FIG. 13 also includesreceiving (1012), in the virtual camera (116), each digital image (1014)from the web site (200) and displaying (1016) each digital image (1014)on a display device (632) of the virtual camera (116).

[0125] In image requests created according to the method of FIG. 13,values of the browsing image request data elements vary among the imagerequests. One example of varying browsing image request data elementsacross image requests is the following. Consider a multiplicity, a groupor set of image requests, having the following image request dataelement values in common:

[0126] Location latitude=39 degrees north

[0127] Location longitude=77 degrees west, downtown Washington

[0128] View direction=270 degrees (due west)

[0129] Date=January 1

[0130] Time=0900

[0131] Zoom=45 millimeters

[0132] In this example, the browsing image request data element is takenas view direction. Seven images are created, each incrementing viewdirection by 15 degrees, so that view direction in the first imagerequest of the set is 270 degrees, 285 degrees in the second, 300degrees in the third, 315 degrees in the fourth, 330 degrees in thefifth, 345 degrees in the sixth, and 360 degrees in the seventh. Whenthese seven image requests are communicated to an electronic photo shop,received and displayed, they result in a sweeping change in view ofdowntown Washington, D.C., with the view directions rotating in six evensteps from due west to due north.

[0133] The method of FIG. 13 also includes identifying (284) a browsingrate (286), wherein communicating (1010) each image request (134) from avirtual camera (116) to a web site (200) for imaging for virtual camerasis carried out in dependence upon the browsing rate (286). A browsingrate is a speed with which image requests are communicated to anelectronic photo shop, one image request per second, or one imagerequest every five seconds, and so on. Using a browsing rate means thata set of image requests according to the method of FIG. 13 can becommunicated, received, and displayed one after another in sequence atregular intervals, so as to present to a user of a virtual camera on adisplay device of the virtual camera a continuous sequential display ofdigital images corresponding to the image requests.

[0134] The method of FIG. 13 also includes, as an alternative to use ofa browsing rate, using ‘next’ or ‘next-image’ commands to step from oneimage to the next in a browse. More particularly, the method of FIG. 13includes receiving (288) at least one ‘next-image’ command (290), each‘next-image’ command representing an instruction to browse to a nextdigital image, wherein communicating (1010) each image request from avirtual camera to a web site for imaging for virtual cameras furthercomprises communicating each image request only after receiving (288) a‘next-image’ command (290). A ‘next-image’ command can be implemented byany keystroke, button press, mouseclick, or switch operation in a userinterface of a virtual camera. Using ‘next-image’ commands afford a userof a virtual camera the ability to step through a sequence of imagerequests one by one at intervals selected manually by the user, ratherthan viewing an automatic sequence as is provided by use of the browsingrate described above.

[0135]FIG. 14 sets forth a data flow diagram illustrating a furtherexemplary method of digital imaging that implements browsing digitalimages with a browsing range of values for a browsing image request dataelement. More particularly, the method of claim 14 includes identifying(276) a browsing range (278) of values for a browsing image request dataelement (268). A browsing range of values is a range of values throughwhich a browsing image request data elements is varied to effectbrowsing of digital images. A browsing range can be identified by abeginning range value and an ending range value. Identifying a browsingrange of values can be implemented by, for example, reading them from atable such as the one illustrated at reference (275) in FIG. 4, wherethe table (275) includes range beginning values (274) and range endingvalues (276), which can be subtracted to identify a browsing range ofvalues.

[0136] The method of FIG. 14 includes identifying (280) one or morebrowsing interval values (282) in a browsing range (278) for a browsingimage request data element (268). Browsing interval values arecumulative sums of a beginning value for a browsing range plus astepping interval. Browsing ranges and stepping values for image requestdata elements can be represented in computer data by use of a datastructure such as that illustrated by the table at reference (275) inFIG. 14. The exemplary table (275) of FIG. 14 comprises a rangebeginning value (274), a range ending value (276), and a stepping value(278) for each of several image request data elements (270) includinglatitude, direction, zoom, exposure, date, and time. Each of the imagerequest data elements (270) can be identified (266) or chosen as abrowsing image request data element (268).

[0137] The method of claim 14 includes creating (272) a multiplicity ofimage requests (134). In the method of FIG. 14, creating (272) amultiplicity of image requests (134) includes creating, for eachbrowsing interval value (282) in the browsing range (278), an imagerequest (134), wherein each image request has a browsing image requestdata element (268) set to a browsing interval value.

[0138] For a further explanation of how browsing interval values areconstructed as cumulative sums of a range beginning value and a steppinginterval, consider an example where a browsing image request dataelement is taken as latitude, the beginning value of the range oflatitudes is 39 degrees at 77 degrees longitude, the end value of therange is 39.01 degrees, and the stepping interval is 0.001 degrees, thenthe browsing interval values as cumulative sums of the beginning valueplus the stepping interval are 39.001 degrees latitude, 39.002 degreeslatitude, 39.003 degrees latitude, and so on, stopping after the tenthbrowsing interval value at the top of the browsing range, 39.01 degreeslatitude, holding longitude constant in this example. If all other imagerequest data element values are held constant, including particularly aconstant view direction, then this example would provide a series of tenimages of downtown Washington, D.C., each image would be similar in viewdirection, zoom, exposure, and so on, except that the image depictsnapshots from viewpoints spaced several yards apart moving north alongthe 77^(th) parallel.

[0139] In methods according to FIG. 14, browsing image request dataelements (268) can be identified (266) by prompting through a userinterface (612) for a user to select one:

[0140] Please choose a browsing image request attribute: 1. Location 2.View Direction 3. Zoom 4. Exposure 5. Date 6. Time Your selection (1-6):          

[0141] This exemplary menu is appropriate for a character-basedinterface, but a GUI can be used with pull-down menus, radio button,slider bars, and any other GUI element for user selections as will occurto anyone of skill in the art.

[0142] In embodiments of the kind illustrated by FIG. 14, browsing rangevalues and stepping values can be taken from a table or record structuresuch as that illustrated at reference (275) in FIG. 14. Alternatively,identifying (276) a browsing range (278) of values for a browsing imagerequest data element (268) can be implemented by prompting a userthrough a user interface (612) for a user to enter or select a browsingrange, including specifying a beginning range value and an ending rangevalue. Assume, for example, that a user in response to the menu promptset forth above selected item number 2, View Direction, as a browsingimage request data element. Then identifying (276) a browsing range(278) of values for a browsing image request data element (268) can beimplemented, for example, by prompting a user through a user interfaceof a virtual camera as follows:

[0143] You selected View Direction as a browsing image requestattribute. Please enter a beginning range value for browsing on ViewDirection. The default is 0 degrees, and leaving the beginning rangeentry blank takes the default.

[0144] Your entry for beginning range value: ______

[0145] Please enter an ending range value for browsing on ViewDirection. The default is 360 degrees, and leaving the ending rangeentry blank takes the default.

[0146] Your entry for ending range value: ______

[0147] Please enter a stepping value for browsing on View Direction. Thedefault is 10 degrees, and leaving the stepping range entry blank takesthe default.

[0148] Your entry for stepping value: ______

[0149] Similarly, as shown in the prompts just above, identifying (280)one or more browsing interval values (282) in a browsing range (278) fora browsing image request data element (268) can include prompting forand receiving back as user input through a user interface (612) eitherbrowsing interval values as such or, as shown in the prompts just above,a stepping value from which browsing interval values are constructed ascumulative sums with a range beginning value.

[0150] In this example, values from the example table are used asdefaults rather than actual processing values. More particularly, thevirtual camera's (116) function for identifying (276) a browsing range(278) is programmed to take the beginning range value (274) from thetable (275) as a default value for the beginning of the browsing range,which in this example is a beginning range value of 0 degrees for thebrowsing image request data element ‘View Direction.’ And the virtualcamera's (116) function for identifying (276) a browsing range (278) isprogrammed to take the ending range value (276) from the example table(275) as a default value for the end of the browsing range, which inthis example is an ending range value of 360 degrees for the browsingimage request data element ‘View Direction.’ In this example, thevirtual camera's (116) function for identifying (280) browsing intervalvalues (282) is programmed to take the stepping value (276) from thetable (275) as a default value for a stepping value from which tocalculate browsing interval values (282). In this example, the defaultstepping value taken from table (275) is 10 degrees for the browsingimage request data element ‘View Direction.’

[0151] If a user took the defaults for all the browsing parameters inthis example, beginning range value, ending range value, and steppingvalue, the software routine for identifying (280) browsing intervalvalues (280) identifies thirty-seven browsing intervals for browsing onView Direction, beginning with a browsing interval value of 0 degrees(the beginning range value) and continuing at 10 degree steps with 10degrees, 20 degrees, 30 degrees, and so on, and ending at the endingrange value of 360. If a user took the defaults for all the browsingparameters in this example, then the create function (272) of thevirtual camera (116), in creating an image request (134) for eachbrowsing interval value (282) in the browsing range (278), createsthirty-seven image requests, each of which has the same values for imagerequest data elements other than the browsing image request data element‘View Direction.’ That is, if the set of thirty-seven image requestsincludes image request data elements for snapshot location (304), zoom(308), exposure (309), and so on, then the values of these data elementsare the same across all the image requests in this example. The value ofthe browsing image request data element (268), however, varies acrossall the thirty-seven image requests, beginning with the first browsinginterval value of 0 degrees for ‘View Direction’ and continuing at 10degree intervals up to and including a View Direction of 360 degrees inthe thirty-seventh image request in the set (134).

[0152] Communicating these thirty-seven exemplary image requests to anelectronic photo shop, receiving back corresponding digital images, anddisplaying the images through a display device of a virtual cameraresults in a circular pan of thirty-seven sequential images beginningwith a view direction of due north, 0 degrees, and rotating clockwise at10 degree intervals through east, south, west, ending with thethirty-seventh image having again a view direction of due north, 360degrees. If the images are displayed in dependence upon a browsing rate,displayed one after another in sequence at regular intervals, so as topresent to a user of a virtual camera on a display device of the virtualcamera a continuous sequential display of digital images correspondingto the image requests. If the images are displayed in dependence uponmanually entered ‘next’ or ‘next-image’ commands, then the user of thevirtual camera is afforded the ability to step through the sequence ofimages one by one at intervals selected manually by the user.

[0153] It will be understood from the foregoing description that variousmodifications and changes may be made in the exemplary embodiments ofthe present invention without departing from its true spirit. Thedescriptions in this specification are for purposes of illustration onlyand are not to be construed in a limiting sense. The scope of thepresent invention is limited only by the language of the followingclaims.

What is claimed is:
 1. A method of digital imaging, the methodcomprising: creating, in a virtual camera, an unedited image request foran unedited digital image; editing the unedited image request, producingan edited image request for an edited image; communicating the editedimage request to a web site for imaging for virtual cameras; receiving,in the virtual camera, the edited digital image from the web site; anddisplaying the edited digital image on a display device of a userinterface of the virtual camera.
 2. The method of claim 1 furthercomprising: communicating, from the virtual camera to the web site forimaging for virtual cameras, the unedited image request for an unediteddigital image; receiving, in the virtual camera, the unedited digitalimage from the web site; and displaying the unedited digital image onthe display device of the virtual camera.
 3. The method of claim 1wherein editing the unedited image request further comprises displayingunedited image request data elements on the display device and receivingedited image request data elements from a data entry device of the userinterface.
 4. The method of claim 1 wherein the image requests compriseimage request data elements including location coordinates, viewdirection, date, time, zoom, and exposure.
 5. A method of digitalimaging, the method comprising: identifying a browsing image requestdata element from among image request data elements of an image requestdata structure; creating, in dependence upon the identified browsingimage request data element, a multiplicity of image requests for digitalimages, wherein each image request comprises an instance of the imagerequest data structure having image request data elements one of whichis identified as the browsing image request data element and values ofthe browsing image request data elements vary among the image requests;communicating each image request from a virtual camera to a web site forimaging for virtual cameras; receiving, in the virtual camera, eachdigital image from the web site; and displaying each digital image on adisplay device of the virtual camera.
 6. The method of claim 5 furthercomprising: identifying a browsing range of values for the browsingimage request data element; identifying one or more browsing intervalvalues in the browsing range for the browsing image request dataelement; wherein creating a multiplicity of image requests furthercomprises creating, for each browsing interval value in the browsingrange, an image request, wherein each image request has a browsing imagerequest data element set to a browsing interval value.
 7. The method ofclaim 5 further comprising identifying a browsing rate, whereincommunicating each image request from a virtual camera to a web site forimaging for virtual cameras is carried out in dependence upon thebrowsing rate.
 8. The method of claim 5 further comprising receiving atleast one ‘next-image’ command, each ‘next-image’ command representingan instruction to browse to a next digital image, wherein communicatingeach image request from a virtual camera to a web site for imaging forvirtual cameras further comprises communicating each image request onlyafter receiving a ‘next-image’ command.
 9. A virtual camera comprising:means for creating, in the virtual camera, an unedited image request foran unedited digital image; means for editing the unedited image request,producing an edited image request for an edited image; means forcommunicating the edited image request to a web site for imaging forvirtual cameras; means for receiving, in the virtual camera, the editeddigital image from the web site; and means for displaying the editeddigital image on a display device of a user interface of the virtualcamera.
 10. The virtual camera of claim 9 further comprising: means forcommunicating, from the virtual camera to the web site for imaging forvirtual cameras, the unedited image request for an unedited digitalimage; means for receiving, in the virtual camera, the unedited digitalimage from the web site; and means for displaying the unedited digitalimage on the display device of the virtual camera.
 11. The virtualcamera of claim 9 wherein means for editing the unedited image requestfurther comprises means for displaying unedited image request dataelements on the display device and means for receiving edited imagerequest data elements from a data entry device of the user interface.12. The virtual camera of claim 9 wherein the image requests compriseimage request data elements including location coordinates, viewdirection, date, time, zoom, and exposure.
 13. A virtual cameracomprising: means for identifying a browsing image request data elementfrom among image request data elements of an image request datastructure; means for creating, in dependence upon the identifiedbrowsing image request data element, a multiplicity of image requestsfor digital images, wherein each image request comprises an instance ofthe image request data structure having image request data elements oneof which is identified as the browsing image request data element andvalues of the browsing image request data elements vary among the imagerequests; means for communicating each image request from a virtualcamera to a web site for imaging for virtual cameras; means forreceiving, in the virtual camera, each digital image from the web site;and means for displaying each digital image on a display device of thevirtual camera.
 14. The virtual camera of claim 13 further comprising:means for identifying a browsing range of values for the browsing imagerequest data element; means for identifying one or more browsinginterval values in the browsing range for the browsing image requestdata element; wherein means for creating a multiplicity of imagerequests further comprises means for creating, for each browsinginterval value in the browsing range, an image request, wherein eachimage request has a browsing image request data element set to abrowsing interval value.
 15. The virtual camera of claim 13 furthercomprising means for identifying a browsing rate, wherein means forcommunicating each image request from a virtual camera to a web site forimaging for virtual cameras functions in dependence upon the browsingrate.
 16. The virtual camera of claim 13 further comprising means forreceiving at least one ‘next-image’ command, each ‘next-image’ commandrepresenting an instruction to browse to a next digital image, whereinmeans for communicating each image request from a virtual camera to aweb site for imaging for virtual cameras further comprises means forcommunicating each image request only after receiving a ‘next-image’command.
 17. A computer program product for digital imaging, thecomputer program product comprising: a recording medium; means, recordedon the recording medium, for creating, in the virtual camera, anunedited image request for an unedited digital image; means, recorded onthe recording medium, for editing the unedited image request, producingan edited image request for an edited image; means, recorded on therecording medium, for communicating the edited image request to a website for imaging for virtual cameras; means, recorded on the recordingmedium, for receiving, in the virtual camera, the edited digital imagefrom the web site; and means, recorded on the recording medium, fordisplaying the edited digital image on a display device of a userinterface of the virtual camera.
 18. The computer program product ofclaim 17 further comprising: means, recorded on the recording medium,for communicating, from the virtual camera to the web site for imagingfor virtual cameras, the unedited image request for an unedited digitalimage; means, recorded on the recording medium, for receiving, in thevirtual camera, the unedited digital image from the web site; and means,recorded on the recording medium, for displaying the unedited digitalimage on the display device of the virtual camera.
 19. The computerprogram product of claim 17 wherein means for editing the unedited imagerequest further comprises means, recorded on the recording medium, fordisplaying unedited image request data elements on the display deviceand means, recorded on the recording medium, for receiving edited imagerequest data elements from a data entry device of the user interface.20. The computer program product of claim 17 wherein the image requestscomprise image request data elements including location coordinates,view direction, date, time, zoom, and exposure.
 21. A computer programproduct for digital imaging, the computer program product comprising: arecording medium; means, recorded on the recording medium, foridentifying a browsing image request data element from among imagerequest data elements of an image request data structure; means,recorded on the recording medium, for creating, in dependence upon theidentified browsing image request data element, a multiplicity of imagerequests for digital images, wherein each image request comprises aninstance of the image request data structure having image request dataelements one of which is identified as the browsing image request dataelement and values of the browsing image request data elements varyamong the image requests; means, recorded on the recording medium, forcommunicating each image request from a virtual camera to a web site forimaging for virtual cameras; means, recorded on the recording medium,for receiving, in the virtual camera, each digital image from the website; and means, recorded on the recording medium, for displaying eachdigital image on a display device of the virtual camera.
 22. Thecomputer program product of claim 21 further comprising: means, recordedon the recording medium, for identifying a browsing range of values forthe browsing image request data element; means, recorded on therecording medium, for identifying one or more browsing interval valuesin the browsing range for the browsing image request data element;wherein means for creating a multiplicity of image requests furthercomprises means, recorded on the recording medium, for creating, foreach browsing interval value in the browsing range, an image request,wherein each image request has a browsing image request data element setto a browsing interval value.
 23. The computer program product of claim21 further comprising means, recorded on the recording medium, foridentifying a browsing rate, wherein means for communicating each imagerequest from a virtual camera to a web site for imaging for virtualcameras functions in dependence upon the browsing rate.
 24. The computerprogram product of claim 21 further comprising means, recorded on therecording medium, for receiving at least one ‘next-image’ command, each‘next-image’ command representing an instruction to browse to a nextdigital image, wherein means for communicating each image request from avirtual camera to a web site for imaging for virtual cameras furthercomprises means, recorded on the recording medium, for communicatingeach image request only after receiving a ‘next-image’ command.